var SelectList = []//(用于记录被选中的行)
$(function () {
    $("#jqGrid").jqGrid({
        url: 'sys/generator/list',
        datatype: "json",
        colModel: [			
			{ label: '表名', name: 'tableName', width: 100, key: true },
			{ label: 'Engine', name: 'engine', width: 70},
			{ label: '表备注', name: 'comments', width: 100 },
			{ label: '创建时间', name: 'createTime', width: 100 }
        ],
		viewrecords: true,
        height: 395,
        rowNum: 10,
		rowList : [10,30,50,100,200],
        rownumbers: true, 
        rownumWidth: 35,
        autowidth:true,
        multiselect: true,
        pager: "#jqGridPager",
        jsonReader : {
            root: "page.list",
            page: "page.currPage",
            total: "page.totalPage",
            records: "page.totalCount"
        },
        prmNames : {
            page:"page", 
            rows:"limit", 
            order: "order"
        },
        onSelectAll: function (aRowids, status) {
            if (status) {
                for (var i = 0; i < aRowids.length; i++) {
                    if (SelectList.indexOf(aRowids[i]) == -1) {//每一次勾选时，检查该行是否在SelectList中，
                        //若在，则在SelectList中删除该记录
                        //（翻页也会触发onselect事件，所以需检查该行是否在unselects中）
                        SelectList.push(aRowids[i]);
                    }
                }
            } else {
                for (var i = 0; i < aRowids.length; i++) {
                    if (SelectList.indexOf(aRowids[i]) > -1) {//每一次勾选时，检查该行是否在SelectList中，
                        //若在，则在SelectList中删除该记录
                        //（翻页也会触发onselect事件，所以需检查该行是否在unselects中）
                        SelectList.splice($.inArray(aRowids[i], SelectList), 1)
                    }
                }
            }
        },
        onSelectRow: function (rowid, status) {
            if (status) { // 每一次取消选中时，将该行id添加到SelectList中
                if (SelectList.indexOf(rowid) == -1) {//每一次勾选时，检查该行是否在SelectList中，
                    //若在，则在SelectList中删除该记录
                    //（翻页也会触发onselect事件，所以需检查该行是否在unselects中）
                    SelectList.push(rowid);
                }
            } else {
                if (SelectList.indexOf(rowid) > -1) {//每一次勾选时，检查该行是否在SelectList中，
                    //若在，则在SelectList中删除该记录
                    //（翻页也会触发onselect事件，所以需检查该行是否在unselects中）
                    SelectList.splice($.inArray(rowid, SelectList), 1)
                }
            }
        },
        gridComplete:function(){
            var ids = $("#jqGrid").jqGrid('getDataIDs');
            for (var i = 0; i < ids.length; i++) {
                if ((SelectList.indexOf(ids[i]) > -1)) {
                    $("#jqGrid").jqGrid('setSelection', ids[i]);
                }
            }
        	//隐藏grid底部滚动条
        	$("#jqGrid").closest(".ui-jqgrid-bdiv").css({ "overflow-x" : "hidden" }); 
        }
    });
    vm.init();
});

var vm = new Vue({
	el:'#rrapp',
	data:{
		q:{
			tableName: null
		},
        //接收后端的返回结果集
        result_list:[],
        //接收已经选择的结果集
        select_list:[]
	},
    //监听部分
    watch: {
        /**
         * 监听后端的返回结果集
         */
        result_list:function () {
            this.$nextTick(function () {
                $('#sel').selectpicker('refresh');
            })
        },
        /**
         * 监听已经选择的结果集
         */
        select_list:function () {
            console.log(this.select_list)
        }
    },
	methods: {
		query: function () {
            if(vm.select_list && vm.select_list.length == 0){
                alert("请选择数据库查询");
                return ;
            }
			$("#jqGrid").jqGrid('setGridParam',{ 
                postData:{'tableName': vm.q.tableName,"id":vm.select_list},
                page:1 
            }).trigger("reloadGrid");
		},
		generator: function() {
            if(vm.select_list && vm.select_list.length == 0){
                alert("请选择数据库查询");
                return ;
            }
            if(SelectList.length == 0){
                alert("请选择表名");
                return ;
            }
            $('#projectEditForm').formReset();
            $("#operateMode").val('add');
            $("#tableNames").val(SelectList.join());

            $('#projectEditModal').modal({backdrop: false});

            $("#submitProject").show();
		},
        /**
         * 初始化数据，向后端请求结果
         */
        init:function () {
            var self = this;
            //代替http请求
            $.post("/sys/database/select", function (result) {
                if (typeof(result) == "string") {
                    result = $.parseJSON(result);
                }
                if (result.code == 0) {
                    self.result_list = result.databases;
                }
            });
            $('#sel').selectpicker({
                actionsBox: true
            })
        }
	}
});

$('#submitBtn').on('click', function () {
    var str = "";
    var checkValues = [];
    $(".checkbox-inline input").each(function(){
        if(true == $(this).is(':checked')){
            checkValues.push($(this).val());
        }
    });
    var parentProjectName = $("#parentProjectName").val();
    if(parentProjectName.replace(/(^\s*)|(\s*$)/g, "").length ==0){
        alert("父级项目名称不能为空");
        return;
    }
    var projectName = $("#projectName").val();
    if(projectName.replace(/(^\s*)|(\s*$)/g, "").length ==0){
        alert("子项目名称不能为空");
        return;
    }
    var packageName = $("#packageName").val();
    if(packageName.replace(/(^\s*)|(\s*$)/g, "").length ==0){
        alert("项目包名不能为空");
        return;
    }
    var moduleName = $("#moduleName").val();
    if(moduleName.replace(/(^\s*)|(\s*$)/g, "").length ==0){
        alert("模块名称不能为空");
        return;
    }
    var databaseId = vm.select_list;
    var tableNames = $("#tableNames").val();
    $("#submitBtn").button("loading");
    $('#projectEditModal').modal('hide');
    location.href = "sys/generator/code?tables=" + tableNames+"&databaseId="+databaseId+"&parentProjectName="+parentProjectName+"&projectName="+projectName+"&packageName="+packageName+"&moduleName="+moduleName+"&checkValues="+checkValues.join(",");
    $("#submitBtn").button("reset");
});